package sistema.controleVendas.telas;

import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;

import java.awt.Rectangle;
import javax.swing.JButton;
import javax.swing.BorderFactory;
import javax.swing.border.SoftBevelBorder;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.JRadioButton;
import javax.swing.JComboBox;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.border.TitledBorder;
import java.awt.Font;
import java.awt.Color;
import java.text.DecimalFormat;
import java.util.Vector;

import javax.swing.border.EtchedBorder;
import javax.swing.table.DefaultTableModel;

import sistema.controleVendas.controladores.GerenciarClientes;
import sistema.controleVendas.controladores.GerenciarProdutos;
import sistema.controleVendas.entidades.Interesse;
import sistema.controleVendas.entidades.PessoaFisica;
import sistema.controleVendas.entidades.Produto;
import sistema.controleVendas.entidades.TipoProduto;
import sistema.controleVendas.persistencia.GerenciarTiposProdutosPersistencia;

import java.awt.Dimension;

public class TelaGerenciaProdutos extends JFrame {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JPanel botoes = null;
	private JButton adicionarB = null;
	private JButton removerB = null;
	private JPanel conteudo = null;
	private JButton editarB = null;
	private JButton sairB = null;
	private JScrollPane tabelaProdutosSP = null;
	private JTable tabelaProdutosT = null;
	private JTextField buscar = null;
	private JLabel buscarT = null;
	private JComboBox tipoProduto = null;
	private JLabel tipoT = null;
	private GerenciarProdutos gp = null;
	private DefaultTableModel produtos = null;
	Vector valores = null;  //  @jve:decl-index=0:
	private JButton exibirB = null;
	private JLabel tipoT1 = null;
	
	/**
	 * This is the default constructor
	 */
	public TelaGerenciaProdutos() {
		super();
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(660, 416);
		this.setContentPane(getJContentPane());
		this.setTitle("Gerenciar Produtos");
		try{
			UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
			SwingUtilities.updateComponentTreeUI(this);
		}catch(Exception e){

		}

		gp = new GerenciarProdutos();
		
		
		tipoProduto.addItem("Todos");
		
		for(TipoProduto tp: gp.listarTiposProdutos()){
			tipoProduto.addItem(tp);
		}
		
		
	}
	
	
	public void listarTodosProdutos(){
		produtos.setRowCount(0);
		for(Produto p1 : gp.listarProdutos()){

			double valor = p1.getPreco();
			DecimalFormat df = new DecimalFormat("0.00");
			df.format(valor);

			valores = new Vector();
			valores.add(p1.getId());
			valores.add(p1.getDescricao());
			valores.add(valor);
			produtos.addRow(valores);
		}
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(getBotoes(), null);
			jContentPane.add(getConteudo(), null);
		}
		return jContentPane;
	}

	/**
	 * This method initializes botoes	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getBotoes() {
		if (botoes == null) {
			botoes = new JPanel();
			botoes.setLayout(null);
			botoes.setBounds(new Rectangle(0, 330, 643, 49));
			botoes.setBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED));
			botoes.add(getAdicionarB(), null);
			botoes.add(getRemoverB(), null);
			botoes.add(getEditarB(), null);
			botoes.add(getSairB(), null);
			botoes.add(getExibirB(), null);
		}
		return botoes;
	}

	/**
	 * This method initializes adicionarB	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getAdicionarB() {
		if (adicionarB == null) {
			adicionarB = new JButton();
			adicionarB.setBounds(new Rectangle(12, 12, 91, 25));
			adicionarB.setText("Adicionar");
			adicionarB.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					Main.getMain().setTcPF(new TelaCadastroPF());
					Main.getMain().getTcPF().setVisible(true);
					dispose();
					//TelaCadastroPF tcpf = new TelaCadastroPF();
					//tcpf.setVisible(true);
				}
			});
		}
		return adicionarB;
	}

	/**
	 * This method initializes removerB	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getRemoverB() {
		if (removerB == null) {
			removerB = new JButton();
			removerB.setBounds(new Rectangle(108, 12, 91, 25));
			removerB.setText("Remover");
			removerB.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					int numLinha = tabelaProdutosT.getSelectedRow();
					int id = Integer.parseInt(tabelaProdutosT.getValueAt(numLinha, 0).toString());
					Produto produto = new Produto();
					produto.setId(id);
					gp.removerProduto(produto);
					JOptionPane.showMessageDialog(null, "Removido com sucesso");
					buscar.setText("");
					listarTodosProdutos();
				
				}
			});
		}
		return removerB;
	}

	/**
	 * This method initializes conteudo	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getConteudo() {
		if (conteudo == null) {
			tipoT1 = new JLabel();
			tipoT1.setBounds(new Rectangle(24, 12, 27, 16));
			tipoT1.setText("Tipo:");
			buscarT = new JLabel();
			buscarT.setBounds(new Rectangle(240, 12, 33, 16));
			buscarT.setText("Valor:");
			conteudo = new JPanel();
			conteudo.setLayout(null);
			conteudo.setBounds(new Rectangle(0, 0, 643, 331));
			conteudo.setEnabled(true);
			conteudo.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED));
			conteudo.setVisible(true);
			conteudo.add(getTabelaProdutosSP(), null);
			conteudo.add(getBuscar(), null);
			conteudo.add(buscarT, null);
			conteudo.add(getTipoProduto(), null);
			//conteudo.add(tipoT, null);
			conteudo.add(tipoT1, null);
		}
		return conteudo;
	}

	/**
	 * This method initializes editarB	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getEditarB() {
		if (editarB == null) {
			editarB = new JButton();
			editarB.setBounds(new Rectangle(204, 12, 85, 25));
			editarB.setText("Editar");
			editarB.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					int numLinha = tabelaProdutosT.getSelectedRow();
					int id = Integer.parseInt(tabelaProdutosT.getValueAt(numLinha, 0).toString());
					
					Main.getMain().setTcPF(new TelaCadastroPF(1, id));
					Main.getMain().getTcPF().setVisible(true);
					
					dispose();
				}
			});
		}
		return editarB;
	}

	/**
	 * This method initializes sairB	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getSairB() {
		if (sairB == null) {
			sairB = new JButton();
			sairB.setBounds(new Rectangle(378, 12, 67, 25));
			sairB.setText("Sair");
			sairB.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					dispose();
				}
			});
		}
		return sairB;
	}

	/**
	 * This method initializes tabelaProdutosSP	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getTabelaProdutosSP() {
		if (tabelaProdutosSP == null) {
			tabelaProdutosSP = new JScrollPane();
			tabelaProdutosSP.setBounds(new Rectangle(20, 50, 595, 256));
			tabelaProdutosSP.setViewportView(getTabelaProdutosT());
		}
		return tabelaProdutosSP;
	}

	/**
	 * This method initializes tabelaProdutosT	
	 * 	
	 * @return javax.swing.JTable	
	 */
	private JTable getTabelaProdutosT() {
		if (tabelaProdutosT == null) {
			produtos = new DefaultTableModel();
			produtos.addColumn("id");
			produtos.addColumn("Nome");
			produtos.addColumn("Valor");
			produtos.addColumn("Quantidade");
			tabelaProdutosT = new JTable(produtos);
			tabelaProdutosT.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
		}
		return tabelaProdutosT;
	}

	/**
	 * This method initializes buscar	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getBuscar() {
		if (buscar == null) {
			buscar = new JTextField();
			buscar.setBounds(new Rectangle(282, 12, 331, 19));
			buscar.addKeyListener(new java.awt.event.KeyAdapter() {
				public void keyReleased(java.awt.event.KeyEvent e) {
					// Se estiver vazio o campo, liste tds com o mesmo interesse
					if(buscar.getText().equalsIgnoreCase("")){
						listarTodosProdutos();
					}else{
						String campo = "";
						produtos.setRowCount(0);
						for(Produto p1 : gp.buscarProdutos(buscar.getText())){
							valores = new Vector();
							valores.add(p1.getId());
							valores.add(p1.getDescricao());							
							valores.add(p1.getPreco());
							produtos.addRow(valores);
						}
					}
					
					
					
					
					
				}
			});
		}
		return buscar;
	}

	/**
	 * This method initializes buscarEscolha	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	/**
	 * This method initializes tipoProduto	
	 * 	
	 * @return javax.swing.JComboBox	
	 */
	private JComboBox getTipoProduto() {
		if (tipoProduto == null) {
			tipoProduto = new JComboBox();
			tipoProduto.setBounds(new Rectangle(60, 12, 163, 19));
			tipoProduto.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					listarTodosProdutos();
				}
			});
		}
		return tipoProduto;
	}

	/**
	 * This method initializes exibirB	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getExibirB() {
		if (exibirB == null) {
			exibirB = new JButton();
			exibirB.setBounds(new Rectangle(294, 12, 79, 25));
			exibirB.setText("Exibir");
			exibirB.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					int numLinha = tabelaProdutosT.getSelectedRow();
					int id = Integer.parseInt(tabelaProdutosT.getValueAt(numLinha, 0).toString());
					
					Main.getMain().setTcPF(new TelaCadastroPF(2, id));
					Main.getMain().getTcPF().setVisible(true);
					
					dispose();
				}
			});
		}
		return exibirB;
	}

}  //  @jve:decl-index=0:visual-constraint="10,10"
